BrazeのAPIを使ってカスタムイベントをBigQueryにエクスポートする
Brazeブロガーの國崎です。
今回はBrazeのAPIを使ってカスタムイベントのエクスポートをやってみました。
ついでにBigQueryにも突っ込んでみたので、イベントデータをデータウェアハウスに入れたい方は、ぜひ参考にしてください。
前提条件
今回の記事は以下の条件を前提に行なっております。
- Brazeでカスタムイベントを計測済み
- Google Coludのプロジェクト作成済み
- BigQueryのサービスアカウント発行済み
BrazeでRest APIキーを作成
まず左メニューの開発者コンソール>API SettingsでAPI Keyの作成を行います。
今回はイベントデータのエクスポートになるので、イベントデータの項目にチェックを入れます。
余談ですが、イベントデータ以外の抽出をしたい場合は、他の項目にチェックを入れてください。
保存するとAPIキーが発行されます。
このAPIキーは何かと使うので、いつでもコピーできるようにしておくのがいいです。
APIキーを作成したらPostmanでもサクッと書き出すことができます。
Postmanの初期設定については以下記事で紹介してますので、ここでは割愛します。
Postmanを使ってBrazeのユーザー情報をいじってみた
Postmanでイベントデータの取得
Postmanでのイベントデータ取得にあたっては以下の項目をParamsに設定します。
パラメータ | 必須/任意 | タイプ | 説明 |
---|---|---|---|
event | 必須 | String | カスタム イベントの名前 |
length | 必須 | Integer | 何日(時間)前のイベントか1〜100の間で指定 |
unit | 任意 | String | データポイント間の日(時間)の単位 |
ending_at | 任意 | Datetime | データ系列の終了日にち。デフォルトはリクエストの時間 |
app_id | 任意 | String | アプリAPI識別子(開発者コンソールで確認) |
segment_id | 任意 | String | セグメントAPI識別子(セグメントで確認) |
今回はテストなので以下必須の項目のみをParamsに設定しました。
event:shopify_created_order length:100
あとはお決まりですが、HeadersにAuthorizationとContent-Typeを以下書きます。
Authorization:Bearer {{api_key}} Content-Type:application/json
上記設定後、PostmanのURL横にあるSendをクリック。
無事イベントデータが書き出されました。
{ "data": [ { "time": "2023-03-30", "count": 1 }, { "time": "2023-03-31", "count": 1 } ], "message": "success" }
この書き出しを次はBigQueryでやってみましょう!!!
BigQueryで書き出し
BrazeのカスタムイベントをBigQueryで取得する手順です。
ここではPythonをGoogle colaboratoryで使ってやります。
コードは以下です。
from google.cloud import bigquery from google.cloud.exceptions import NotFound from google.oauth2 import service_account import requests import json # Braze APIからカスタムイベントデータを取得 api_key = "BrazeのAPIキー" url = "https://rest.fra-01.braze.eu/events/data_series?event=書き出したいカスタムイベント名&length=100" headers = { "Authorization": f"Bearer {api_key}", } response = requests.get(url, headers=headers) data = response.json() print(data) # Google BigQueryの認証 credentials = service_account.Credentials.from_service_account_file("BigQuery管理者権限のサービスアカウントのjsonパス") client = bigquery.Client(credentials=credentials, project="Google CloudのプロジェクトID") # BigQueryにテーブルを作成 schema = [ bigquery.SchemaField("count", "INTEGER", mode="NULLABLE"), bigquery.SchemaField("time", "STRING", mode="NULLABLE"), # 他のカラムもここに追加 ] # テーブルIDを作成 table_id = "BigQueryのテーブルID" table_ref = client.dataset("データセット名").table("テーブル名") # テーブルが存在するかどうかを確認 try: client.get_table(table_ref) print(f"Table {table_id} already exists.") except NotFound: print(f"Table {table_id} not found. Creating table.") table = bigquery.Table(table_id, schema=schema) table = client.create_table(table) # データを整形 rows_to_insert = [ {"count": item["count"], "time": item["time"]} for item in data["data"] ] # カスタムイベントデータをBigQueryにインポート errors = client.insert_rows_json(table, rows_to_insert) if errors == []: print("データのインポートに成功しました") else: print("データのインポート中にエラーが発生しました:", errors)
こちらで実行すると以下のコードが表示されます。
{'data': [{'time': '2023-03-30', 'count': 1}, {'time': '2023-03-31', 'count': 1}], 'message': 'success'} Table kunisaki.braze_test20221215.braze_custom_event already exists. データのインポートに成功しました
実際にBigQueryを見てみると無事データの取得ができてました。
補足ですが、テーブル名に「-」を入れるとBigQueryの記述ではエラーになるので、名前には「-」ではなく「_」にするのがいいです。
今回はカスタムイベントのエクスポートでしたが、他のデータもGETするURLや項目が変わる程度で基本的なやり方は変わらないと思います。
詳細についてはBrazeのドキュメントをご確認ください。
今回の記事では以下を参考としました。